계층적 파일 시스템
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
계층적 파일 시스템(HFS)은 1985년 애플이 매킨토시용 하드 디스크 드라이브를 지원하기 위해 도입한 파일 시스템이다. MFS(Macintosh File System)를 대체하며, 파일은 데이터 포크와 리소스 포크를 가질 수 있고, 파일 이름 대신 고유한 파일 ID로 참조된다. HFS는 B-트리 구조의 카탈로그 파일을 사용하여 플로피 디스크에서 MFS의 성능 문제를 해결했다. HFS는 65,535개의 파일로 제한되었고, 1998년 HFS Plus가 도입되면서 개선되었다. macOS에서는 부팅에 사용할 수 없으며, macOS 10.6부터는 읽기 전용으로 지원되다가 macOS 10.12에서 공식 지원이 중단되었다.
더 읽어볼만한 페이지
- 맥 OS - 맥 OS X 서버 1.0
맥 OS X 서버 1.0은 애플이 1999년에 출시한 서버 운영 체제로, 클래식 맥 OS와 넥스트스텝 기술을 결합하여 넷부트 서버, 아파치 웹 서버, 퀵타임 스트리밍 서버 등의 기능을 제공했지만, 높은 가격과 일부 단점으로 인해 빠르게 단종되었다. - 맥 OS - 시스템 7
시스템 7은 1991년 애플이 출시한 매킨토시 운영 체제의 주요 업그레이드 버전으로, 싱글 태스킹 한계를 극복하고 개인 파일 공유, 별칭, 드래그 앤 드롭 등 다양한 기능을 제공하며 PowerPC 기반 컴퓨터를 지원한다. - 파일 시스템 - 부트 섹터
부트 섹터는 시스템 부팅 코드를 담은 저장 매체의 특정 영역으로, 볼륨 부트 레코드(VBR)와 마스터 부트 레코드(MBR)로 나뉘며, BIOS는 이를 실행하고 UEFI는 부트로더를 직접 로드하지만 바이러스 공격에 취약하다. - 파일 시스템 - ZFS
ZFS는 Jeff Bonwick 등이 설계하고 구현한 파일 시스템으로, 데이터 무결성, 스냅샷, RAID-Z 등의 기능을 제공하며, 썬 마이크로시스템즈에서 개발되어 OpenZFS 프로젝트를 통해 다양한 운영체제에서 사용된다.
계층적 파일 시스템 - [IT 관련 정보]에 관한 문서 | |
---|---|
파일 시스템 정보 | |
이름 | HFS |
전체 이름 | 계층적 파일 시스템 |
개발자 | 애플 |
도입 운영 체제 | 시스템 3.1 |
도입 날짜 | 1985년9월 17일 |
후속 파일 시스템 | HFS Plus |
선행 파일 시스템 | MFS |
파티션 ID | Apple_HFS (Apple Partition Map)0xAF (MBR) HFS 및 HFS+ |
디렉터리 구조 | B-트리 |
파일 구조 | 비트맵 |
불량 블록 구조 | B-트리 |
최대 파일 수 | 65,535 |
최대 파일 크기 | 2 GB (2 × 10243 바이트) |
최대 파일 이름 크기 | 31자 |
최대 볼륨 크기 | 2 TB (2 × 10244 바이트) |
파일 이름 문자 집합 | 콜론(:)을 제외한 모든 8비트 값. 널 및 비인쇄 문자는 권장되지 않음. |
날짜 기록 | 생성, 수정, 백업 |
날짜 범위 | 1904년1월 1일 – 2040년2월 6일 |
날짜 해상도 | 1초 |
포크/스트림 | 2개 (데이터 및 리소스) |
속성 | 색상(3비트, 다른 모든 플래그 1비트), 잠김, 사용자 정의 아이콘, 번들, 숨김, 별칭, 시스템, 문구, 초기화됨, INIT 리소스 없음, 공유, 데스크톱 |
파일 시스템 권한 | AppleShare |
압축 | 예 (타사 제품); Stacker, AutoDoubler, TimesTwo, Now Compress, StuffIt SpaceSaver, Alysis Software 제품 (SuperDisk!, More Disk Space, The Alysis Disk Expander 및 eDisk), AutoSqueeze |
암호화 | 아니오 |
운영 체제 | Classic Mac OS macOS GS/OS 리눅스 마이크로소프트 윈도우 (MacDrive 또는 Boot Camp IFS 드라이버를 통해) |
2. 역사
HFS는 1985년 9월 애플이 매킨토시용 하드 디스크 드라이브를 지원하기 위해 도입한 파일 시스템으로, 초기 매킨토시와 함께 도입된 매킨토시 파일 시스템(MFS)을 대체한다. HFS는 애플 III의 SOS를 기반으로 한다.[2] 1986년 1월, 매킨토시 플러스와 함께 출시된 128K ROM에 포함되어 널리 보급되었다.
HFS는 MFS의 디렉토리 구조를 B-트리 구조의 ''카탈로그 파일''로 대체하여 검색 속도를 크게 향상시켰다.[2] 또한, 16비트 정수를 32비트로 대체하여 더 많은 숫자를 저장할 수 있도록 개선했다.
1998년, 애플은 HFS의 비효율적인 디스크 공간 할당 문제를 해결하고 성능을 개선한 HFS 플러스를 도입하였다. HFS는 OS X(현재 macOS)에서 한동안 지원되었으나, OS X 10.6 (스노 레퍼드)부터 읽기 전용으로 변경되었고, macOS 시에라 (10.12)에서 지원이 중단되었다.[3]
2. 1. MFS (Macintosh File System)
초기 매킨토시에서 사용되었던 Macintosh File System|매킨토시 파일 시스템영어(MFS)는 플랫 파일 시스템이었으며, 폴더는 파인더 레벨에서 에뮬레이트되었다.[2] 따라서 애플리케이션에서는 모든 파일이 동일한 계층으로 보였고, 파일 수가 적은 플로피 디스크에서는 큰 문제가 되지 않았지만, 하드 디스크를 사용하고 애플리케이션에서 처리하는 파일 수가 늘어나면서 불편함이 커졌다.[2] 게다가 약 100개가 넘는 파일을 처리하면 매우 불안정해졌다.[2]3. HFS의 특징
HFS는 1985년 9월 애플이 매킨토시용 하드 디스크 드라이브를 지원하기 위해 도입한 파일 시스템이다. HFS는 애플의 실패작인 애플 III용 계층적 파일 시스템인 SOS를 기반으로 했다.[2] 폴더를 이용한 계층 구조를 지원하며, 이름에 "Hierarchical"의 "H"가 붙었다.
HFS는 다음과 같은 특징을 가지고 있다.
- 두 개의 포크: 주 데이터(데이터 포크) 외에 리소스 포크라는 메타 정보를 갖는다.
- 대소문자를 구별하지 않음: 파일 이름은 최대 31자까지 가능하며, 대소문자를 구별하지 않는다.
- 파일 ID: 파일은 파일 이름 대신 고유한 파일 ID (CNID)로 참조된다.
- '''카탈로그 파일''': B-트리 구조를 사용하여 파일 및 디렉토리 정보를 빠르게 검색할 수 있다.[2]
- '''에일리어스''': 심볼릭 링크, 바로 가기보다 진보된 에일리어스(Alias) 기능을 제공한다.
HFS는 1998년 HFS 플러스로 대체되었지만, 여전히 현재 버전의 맥 OS에서 지원된다. 그러나 OS X부터 HFS 볼륨은 부팅용으로 사용할 수 없으며, macOS 시에라 (10.12) 부터는 HFS 표준 파일 시스템은 더 이상 지원되지 않으며,[3] macOS 10.15가 출시되면서 읽기 전용으로만 사용 가능하다.[4]
3. 1. HFS의 구조
HFS 볼륨은 512바이트 논리 블록으로 구성되며, 이러한 논리 블록들은 할당 블록(Allocation Block)으로 그룹화된다. 할당 블록은 볼륨 크기에 따라 하나 이상의 논리 블록을 포함할 수 있다. HFS는 16비트 값을 사용하여 할당 블록을 주소 지정하므로, 할당 블록의 수는 최대 65,535개(216-1)로 제한된다.[2]HFS 볼륨은 다음 5가지 주요 구조로 구성된다:
- '''부트 블록''': 볼륨의 논리 블록 0과 1은 시스템 시작 정보를 포함한다.[2] 예를 들어, 시스템 및 셸(일반적으로 Finder) 파일의 이름이 시작 시 로드된다.
- '''마스터 디렉토리 블록''' ('''MDB'''): 논리 블록 2에는 볼륨 생성 날짜 및 타임스탬프, 볼륨 비트맵과 같은 다른 볼륨 구조의 위치, 할당 블록과 같은 논리 구조의 크기 등 볼륨 자체에 대한 광범위한 데이터가 정의되어 있다. 또한 볼륨의 끝에서 두 번째 논리 블록에는 '''대체 마스터 디렉토리 블록''' ('''대체 MDB''')이라는 MDB의 복제본이 있다. 이는 주로 디스크 유틸리티에서 사용하기 위한 것이며 카탈로그 파일 또는 익스텐트 오버플로 파일의 크기가 증가할 때만 업데이트된다.
- '''볼륨 비트맵''': 논리 블록 3은 어떤 할당 블록이 사용 중이고 어떤 블록이 비어 있는지 추적하는 볼륨 비트맵의 시작 블록이다. 볼륨의 각 할당 블록은 맵의 비트로 표시된다. 비트가 설정되면 블록이 사용 중이고, 비트가 지워지면 블록을 사용할 수 있다. 볼륨 비트맵은 각 할당 블록을 나타내는 비트를 가져야 하므로 크기는 볼륨 자체의 크기에 따라 결정된다.[2]
- '''익스텐트 오버플로 파일''': B-트리이며, 카탈로그 파일의 초기 3개의 익스텐트가 소진되면 어떤 할당 블록이 어떤 파일에 할당되었는지 기록하는 추가 익스텐트를 포함한다. 최신 버전에서는 파일 시스템이 파일에 잘못된 블록을 할당하려고 시도하는 것을 방지하기 위해 익스텐트 오버플로 파일이 잘못된 블록을 기록하는 익스텐트를 저장하는 기능이 추가되었다.
- '''카탈로그 파일''': 볼륨에 저장된 모든 파일과 디렉토리에 대한 레코드를 포함하는 또 다른 B-트리이다. 4가지 유형의 레코드를 저장한다. 각 파일은 파일 스레드 레코드와 파일 레코드로 구성되고 각 디렉토리는 디렉토리 스레드 레코드와 디렉토리 레코드로 구성된다. 카탈로그 파일의 파일과 디렉토리는 고유한 '''카탈로그 노드 ID''' (또는 '''CNID''')로 위치를 찾는다.
레코드 유형 | 설명 |
---|---|
파일 스레드 레코드 | 파일의 이름과 상위 디렉토리의 CNID만 저장한다. |
파일 레코드 | 파일의 CNID, 파일 크기, 3개의 타임스탬프(파일 생성, 마지막 수정, 마지막 백업 시점), 데이터 및 리소스 포크의 첫 번째 파일 익스텐트 및 익스텐트 오버플로 파일의 파일의 첫 번째 데이터 및 리소스 익스텐트 레코드에 대한 포인터를 포함하여 파일에 대한 다양한 메타데이터를 저장한다. 파일 레코드는 또한 Finder에서 파일의 생성자 코드, 유형 코드, 파일이 나타나야 하는 창 및 창 내 위치와 같은 파일에 대한 속성을 저장하는 데 사용되는 두 개의 16바이트 필드를 저장한다. |
디렉토리 스레드 레코드 | 디렉토리의 이름과 상위 디렉토리의 CNID만 저장한다. |
디렉토리 레코드 | 디렉토리에 저장된 파일 수, 디렉토리의 CNID, 3개의 타임스탬프(디렉토리 생성, 마지막 수정, 마지막 백업 시점)와 같은 데이터를 저장한다. 파일 레코드와 마찬가지로 디렉토리 레코드도 Finder에서 사용하기 위한 두 개의 16바이트 필드를 저장한다. 여기에는 디렉토리 내용, 창의 디스플레이 모드(아이콘 보기, 목록 보기 등)를 표시하는 데 사용되는 창의 너비 및 높이, x 및 y 좌표, 창의 스크롤 막대 위치 등이 저장된다. |
4. 한계
HFS는 카탈로그 파일이 모든 파일과 디렉터리 레코드를 단일 데이터 구조에 저장하기 때문에 멀티태스킹 환경에서 성능 저하를 유발할 수 있다. 한 번에 하나의 프로그램만 이 구조에 쓸 수 있어, 여러 프로그램이 대기해야 하는 상황이 발생할 수 있기 때문이다.[6] 또한 카탈로그 파일이 손상되면 전체 파일 시스템이 손상될 수 있어 심각한 신뢰성 문제를 야기한다. 이는 파일과 디렉터리 레코드를 별도의 구조에 저장하는 다른 파일 시스템(예: DOS의 FAT 파일 시스템 또는 유닉스 파일 시스템)과 대조적이다. 이러한 파일 시스템에서는 디스크 구조가 분산되어 있어 단일 디렉터리 손상이 치명적이지 않으며, 손상되지 않은 부분의 데이터를 사용하여 복구할 수 있다.[6]
HFS는 65,535개의 할당 블록 제한을 가지고 있어, 파일의 최소 크기가 디스크 크기의 1/65,535와 같아졌다. 따라서 크기에 관계없이 주어진 볼륨은 최대 65,535개의 파일만 저장할 수 있었다. 또한 모든 파일은 할당 블록 크기만큼의 공간을 할당받아, 실제로 필요한 것보다 더 많은 공간을 차지하게 되었다. 디스크가 작을 때는 할당 블록 크기가 작아 문제가 되지 않았지만, 디스크 용량이 커지면서 할당 블록 크기가 과도하게 커져 디스크 공간 낭비가 심해졌다. 예를 들어, 1GB 디스크에서 HFS의 할당 블록 크기는 16,000이므로, 1바이트 파일도 16,000의 디스크 공간을 차지하게 된다. 이는 그림, 데이터베이스, 오디오와 같이 큰 파일보다 작은 파일이 많은 사용자에게 더 큰 문제가 되었다. 이러한 문제를 해결하기 위해 Mac 사용자들은 디스크를 작은 논리 볼륨으로 분할하여 사용하기도 했다. FAT16 파일 시스템에서도 동일한 문제가 발생했다.
5. 다른 운영 체제에서의 지원
HFS는 독점적인 파일 시스템 형식이지만, 문서화가 잘 되어 있어 대부분의 최신 운영 체제에서 HFS 형식의 디스크에 접근할 수 있는 솔루션을 일반적으로 제공한다.[2]
클래식 Mac OS에서는 1998년 버전 8.1에서 HFS+가 도입되었지만, HFS에서의 부팅 및 읽기/쓰기를 계속 지원했다. Mac OS X에서는 HFS 파티션에서의 부팅은 불가능했지만, v10.5까지 읽기/쓰기가 가능했다. Mac OS X v10.6 이후에는 쓰기가 불가능해졌으며, 2016년 macOS 시에라 10.12에서 지원이 중단되었다.[7]
참조
[1]
웹사이트
Losing legacy data to Snow Leopard
http://www.computerw[...]
Computerworld
2009-08-31
[2]
웹사이트
The HFS Primer
http://macjournals.c[...]
GCSF, Incorporated
2003-05-25
[3]
웹사이트
What's New in macOS: macOS Sierra 10.12
https://developer.ap[...]
Apple
2017-01-25
[4]
웹사이트
How to mount HFS Classic drives on MacOS Catalina and later
https://www.matthewh[...]
Matthew Hughes
2020-07-25
[5]
웹사이트
About the security content of Security Update 2021-005 Mojave
https://support.appl[...]
2022-06-21
[6]
서적
Practical File System Design with the Be File System
http://www.nobius.or[...]
Morgan Kaufmann
2006-07-13
[7]
간행물
What's new in OS X - OS X v10.12
https://developer.ap[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com